Computer programs operate in an environment. For example, the environment of some conventional computer programs is a Pentium-compatible computer system with a minimum memory and the Windows XP or XP pro operating system. Other programs, such as those described in the related applications, may require additional items as the environment in which the program can operate. For example, the programs described in the related applications can make use of an agent manager, application shell manager and console manager, operating under the direction of a master controller, all of which can be supplied as computer software, such as the conventional Central product commercially available from Macromedia, Inc., and both described and available from Macromedia.com. The Central product is therefore the environment for the programs that run under it. As used herein, an “environment” is any required or desired hardware or software element used by an application program to run in its expected mode of operation. For example, the Central product is at least part of the environment in which a Central application program runs.
Not only does a computer program operate in its environment, it may be highly dependent on the environment. Some computer programs are written to take advantage of certain capabilities of the environment, and won't operate properly or optimally without those capabilities.
Computer programs may be updated to allow improvements or bug fixes to be incorporated into the software. Additionally, portions of, or all of, the environment may similarly be updated. If the environment is updated to offer new capabilities, computer programs operating in the environment may need to be updated in order to take advantage of the new capabilities.
However, when a new capability is made available in an environment, many developers of computer programs are reluctant to immediately provide an update of the computer programs to take advantage of the new capabilities because they cannot be sure that many users will upgrade their environments. One reason for this reluctance is the fact that not all users will update the environment immediately, requiring the developer of the program to support both the old and new environments. When a single computer program must accommodate both an older environment and a newer one, the program can become larger and operate more slowly. As a result, the developer may hold off developing for the upgraded environment, diminishing the value to users of obtaining the upgraded environment. This causes users to hold off updating the environment, thereby perpetuating the problem of developers being reluctant to upgrade in a vicious cycle.
In the meantime, the new environment may need accommodate different versions of the same program: one version that has the latest enhancements and others that do not, making the environment potentially larger and slower than it would be if obsolete commands could be removed, such removal being possible when all users of programs that used such commands only in their pre-updated versions had updated the programs. This makes the developer of the environment reluctant to update it, further perpetuating the problems.
Even if the developers were willing to update the programs and their environment, the users might still be unwilling to do so. The update process takes time and can be cumbersome for users, and so many users do not wish to perform such an update frequently. This further discourages developers from supplying them.
What is needed is a system and method that can update both a set of one or more computer programs, and some or all of the environment of those programs without requiring significant input or effort from the user.